package com.recursion;

/**
 * @Author: linKe
 * @Date: 2022/1/7 9:51
 * @FileName: RecursionTest
 * @version: 1.0
 * @Description: 递归测试类
 */

public class RecursionTest {
    public static void main(String[] args) {

        //通过打印问题，回顾递归调用机制
        //test(4);

        int res = factorial(3);
        System.out.println("res=" + res);
        // res=6
    }

    /**
     * 打印问题.
     * @param n 数据
     */
    public static void test(int n) {
        if (n > 2) {
            test(n - 1);
        } //else {
        System.out.println("n=" + n);
        // }
        /*
        传入数据为 4 时的结果
        n=2
        n=3
        n=4
         */
    }

    /**
     * 阶乘问题
     * @param n 数据
     * @return 结果
     */
    public static int factorial(int n) {
        if (n == 1) {
            return 1;
        } else {
            // 1 * 2 * 3 回调自身
            return factorial(n - 1) * n;
        }
    }
}
